我正在阅读文档中的http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html,并试图找出包含" accepts_attributes_for"的模型。只有在拥有记录或许多记录时才能使用...
我的背景是t-sql中的一段时间,所以我努力使用" ruby魔法" ...因为有时魔法太模糊了,所以我是要求某人拼出以下这个例子是否允许...而不是使用" has_many"或者"拥有",我使用" belongs_to"因为它是一个交叉链接表。
class Postteam < ActiveRecord::Base
belongs_to :post
belongs_to :team
accepts_nested_attributes_for :posts
accepts_nested_attributes_for :teams
end
答案 0 :(得分:0)
不,它不必,但你必须得到复数匹配。您目前有belongs_to :post
(单数)但accepts_nested_attributes_for :posts
(复数)......
应该{{1}}(单数)匹配
或者,使用:accepts_nested_attributes_for :post
如果通过&#34;交联表&#34;你的意思是一个连接表(例如,将帖子加入团队),模型实际上有has_many :posts
和post_id
然后使用第一个例子。您对帖子和团队都进行了team_id
更正,您需要告诉belongs_to
它只接受单个帖子和单个团队的属性(因此使用accepts_nested_attributes_for
和{分别为{1}}。
如果你使用复数词,例如:post
,那么Rails希望接受一系列的帖子。如果只有一个帖子。然后使用singluar :team
。
滑轨&#39;使用复数是非常直观的,只要你被告知它首先出现在那里的原因。 :)
HOWEVER ... Rails也有连接表的约定,我想你可能会遗漏一点点。 我不能强烈建议您在阅读之前阅读Rails Guides(不仅仅是api文档)以了解Rails约定。如果您违反Rails约定,那么您将会对它进行斗争。如果你与Rails惯例保持一致 - 这将是一次顺畅而轻松的旅行。