UserTreatment が本質的にルックアップ テーブルである次のモデルがありますが、instance_cost と呼ばれる別のフィールドがあり、各関係に対して整数を格納します。
class User < ActiveRecord::Base
has_many :user_treatments
has_many :users, :through => :user_treatments
end
class UserTreatment < ActiveRecord::Base
attr_accessible :instance_cost
belongs_to :user
belongs_to :treatment
end
class Treatment < ActiveRecord::Base
attr_accessible :name
has_many :user_treatments
has_many :users, :through => :user_treatments
end
このようにして、ユーザー ID 14 の最初のインスタンス コストを取得できます。
1.9.3p429 :181 > User.find(14).user_treatments.first.instance_cost
=> 100
そしてこれは治療の名前を得るために
1.9.3p429 :181 > User.find(14).user_treatments.first.treatment.name
=> "Sports Massage"
ただし、simple_form_for を使用してフォームでそれらを表現する際に問題があります
<% simple_form_for @user do |f| %>
# This sucessfully gives us the checkboxes of all treatments and stores them in the UserTreatments table
<%= f.collection_check_boxes(:treatment_ids, Treatment.all, :id, :name) %>
<%= f.fields_for :user_treatments do |pt| %>
<tr>
<td>
<!-- I WANT THE NAME OF THE TREATMENT HERE -->
</td>
<td><span>£</span> <%= pt.input :instance_cost, :as => :string, wrapper: false, label: false %></td>
</tr>
<% end %>
end
私がしなければならないことが2つあります。
- 治療の名前を表示します (user.user_treats.treat.name を simple_form で表現するにはどうすればよいですか?)
- instance_cost を正しく設定してください。現在、まったく設定されていません。