我有两个模型 - “符号”和“用户”。在其他属性中,符号具有“created_by_id”和“updated_by_id”属性,它们是创建/更新某个符号条目的用户的 id。
假设我想显示符号表及其“符号”属性以及每个符号条目的嵌套“创建者”和“更新者”(user.username)属性。结果表应如下所示:
symbol created_by updated_by
------------------------------------
symbol1 username1 username2
symbol2 username1 username2
我怎样才能做到这一点?我想我需要accepts_nested_attributes_for :user
并且可能has_one :user
(?)在我的符号模型中。我还需要belongs_to :user
在我的用户模型中吗?
正确设置模型后,如何在我的视图中访问与“created_by_id”和“updated_by_id”关联的用户的用户名?
我有一个编辑表单,我在其中使用了这样的嵌套表单(效果很好):
<%= form_for @symbol do |f| %>
Symbol:
<%= f.text_field :symbol %>
<%= f.fields_for :kanji do |kf| %>
Meaning:
<%= kf.text_field :meaning %>
Onyomi:
<%= kf.text_field :onyomi %>
Kunyomi:
<%= kf.text_field :kunyomi %>
<% end %>
<%= f.submit "Save" %>
<% end %>
但我不知道在这种情况下如何做类似的事情,我有两个与同一个符号关联的嵌套属性。
我是 Rails 的新手,所以也许我完全知道如何做错了。如果有比我刚才解释的更好的方法,请纠正我。
编辑:这里是模型。第一个实际上称为 JSymbol,但问题仍然存在。
class JSymbol < ActiveRecord::Base
belongs_to :j_symbol_type
has_one :kanji, :dependent => :destroy
has_one :radical, :dependent => :destroy
has_one :vocabulary, :dependent => :destroy
attr_accessible :created_by_id, :updated_by_id, :symbol, :j_symbol_type_id, :level
attr_accessible :kanji_attributes, :radical_attributes, :vocabulary_attributes
accepts_nested_attributes_for :kanji, :radical, :vocabulary
end
和用户模型。
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :lockable, :timeoutable
attr_accessible :username, :email, :password, :password_confirmation, :remember_me
validates :username, :presence => true, :uniqueness => true
end
这当然没有 user-jsymbol 关系,因为我不确定要在其中添加什么样的关系。它应该类似于has_one :user
JSymbol 模型和belongs_to :j_symbol
User 模型中的东西,除了它需要以某种方式完成两次。还有在每个 Symbol 的 action 方法中调用 .build 方法的问题。