我有我的模式設置,如下所示:Rails的
class User < ActiveRecord::Base
has_many :posts, :foreign_key => 'author_id'
end
class Post < ActiveRecord::Base
belongs_to :author, :class_name => 'User'
end
假設:
p = Post.first # just any post instance
a = User.first # any user instance
現在這一段代碼形跡十分怪異
p.author = a
設置完作者後,帖子的屬性author_id
應該設置爲用戶的ID。但是這沒有發生。
我嘗試使用belongs_to
的模型,它沒有class_name
參數,並且所有內容都按預期工作。
現在,還有一件事使得它更加怪異,當我將關聯改爲belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
時,它出乎意料地工作。
這是Rails 3.0.9中的一個bug嗎?不應該不需要外鍵參數,因爲正如文檔所說,其默認值是附加_id
的關聯的名稱。
另請注意,即使沒有:foreign_key => 'author_id'
,關於該關聯的其他一切也按預期工作。 (就像獲取關聯模型一樣)唯一不起作用的是setter方法不設置外鍵。
我知道我可以只是做p.author_id = a.id
或只加:foreign_key
PARAMS我所有的協會與class_name
,但我更喜歡的p.author = a