「シンボル」と「ユーザー」の 2 つのモデルがあります。他の属性の中でも、シンボルには、特定のシンボル エントリを作成/更新したユーザーの ID である「created_by_id」および「updated_by_id」属性があります。
「symbol」属性と、ネストされた「作成者」および「更新者」(user.username) 属性をシンボル エントリごとに含むシンボル テーブルを表示するとします。結果のテーブルは次のようになります。
symbol created_by updated_by
------------------------------------
symbol1 username1 username2
symbol2 username1 username2
どうすればこれを達成できますか?accepts_nested_attributes_for :user
Symbol モデルに必要で、おそらくhas_one :user
(?)必要があると思います。belongs_to :user
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 %>
しかし、同じシンボルに関連付けられた2つのネストされた属性があるこの場合、同様のことを行う方法がわかりませんでした。
私はレールに慣れていないので、おそらくこれを間違って行う方法を完全に理解しました。今説明した方法よりも良い方法がある場合は、修正してください。
編集:ここにモデルがあります。最初のものは実際には 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
もちろん、そこにどのような関係を追加すればよいかわからないため、これにはユーザーとjsymbolの関係がありませんhas_one :user
..JSymbolモデルとbelongs_to :j_symbol
Userモデルのようにする必要がありますが、何らかの方法で2回実行する必要があります..各シンボルのアクション メソッドで .build メソッドを呼び出す問題。