2012-08-12 57 views
3

在belongs_to关联的情况下,即使表中没有对应的外键,rails似乎也允许您设置关联。这是预期的行为?如果数据库中没有外键,rails应该会引发错误吗?

请参见下面的情况:

$> rails new mynewapp 
$> cd mynewapp 
$> rails g model User 
$> rails g model Whatever 
$> rake db:migrate 

#user.rb 
belongs_to :whatever 

$> rails c 
    u = User.new 
    u.save 
    w = Whatever.new 
    w.save 
    u.whatever = w 
    u.save #no error! 

    u.whatever    #=> w(Whatever) 
    u.reload     #=> w(Whatever) 
    User.find(u.id).whatever #=> nil!!!!!! 

我看到铁轨V3.2.3

回答

1

这是预期的行为此行为,协会并不总是涉及user_id的类型列。如果您认为这应该会引发错误,这可能更适合rails github问题页面或rails开发邮件列表。

+0

这种行为记录在任何地方? – 2012-08-12 04:06:15

+0

不 - 我有一种感觉,列出所有不会抛出错误的东西可能会是一个非常长的文档。 – sgrif 2012-08-12 04:10:50

+0

也许,但这个应该是这样的,也许我会提交一些东西;) – 2012-08-14 01:59:23