0

User モデルと Tracker モデルがあります。ユーザー has_many Trackers と Tracker belongs_to User。User モデルには、Tracker モデルの before_save コールバックで使用できるようにしたい tracker_date という仮想属性があります。コールバックは、ネストされた属性の関連付けを通じて同時に更新されるすべてのトラッカー レコードのトラッカー モデルに日付を設定することになっています。これは可能ですか?または、私がやろうとしていることを行うためのより良い方法はありますか?

景色:

<%= form_for @user, :url => {:controller => 'trackers'}, :method => 'post' do |f| %>

<%= f.label :tracker_date, "Week ending" %>
<%= f.text_field :tracker_date %> <br />

    <% @user.top_items.each do |item| %>
    <%= f.fields_for :trackers, item.trackers.build do |g| %>

    <%= item.top_item_name %>   

    <%= g.text_field :value %>
    <%= g.hidden_field :position_id, :value => item.id %>  <br />
    <% end %>
    <% end %>

<%= f.submit "Submit" %>

<% end %>

ユーザー.rb

has_many :trackers
accepts_nested_attributes_for :trackers
attr_accessor :tracker_date
attr_accessible :tracker_date, :trackers_attributes

Tracker.rb

belongs_to :user
attr_accessible :date
before_save :set_date

def set_date
    self.date = self.user.tracker_date
end

この例では、User モデルの仮想属性の値を使用して、Tracker モデルに日付が設定されません。また、User モデルの仮想属性を使用して Tracker モデルで簡単な検証を試みましたが、それもうまくいきませんでした。それを機能させる方法はありますか、または仮想属性の使用を回避するか、ネストされたモデルが仮想属性にアクセスできるようにするより良い方法はありますか?

ありがとう。

4

1 に答える 1