2016-05-19 14 views
0

私のレールアプリケーションでは、私は 'user'と 'store'という2つのモデルを持っています。 An user belongs_to storeA store has_many users。ユーザーは、名前、電子メール、役割などの多くの属性を持っています。ストア用のフォームの1つでは、ネストされたフォームを使用して、ロールがパッカーのユーザーを作成したいと考えています。問題は、ネストされたフォームを使用する場合で、ロールが「パッカー」でない他のユーザーもリストされている場合です。私は具体的には、その役割が「パッカー」であるユーザーに対してのみネストされたフォームを使用したいと考えています。あなたはセットアップに「ショートカット」の関係を望むことで起動するには、ネストされた形で「パッカー」のような役割ネストされたフォームのフィルタ - Ruby on Rails

答えて

0

でユーザーをフィルタする方法はあります:

class Store < ActiveRecord::Base 
    has_many :users 
    has_many :packers, -> { where(role: 'packer') }, class_name: 'User' 
end 

class User < ActiveRecord::Base 
    belongs_to :store 
end 

fields_for(record_name, record_object = nil, options = {}, &block)は、そのオプションのrecord_object引数を取りますあなたが使用したレコードを設定することができます:f.objectを使用して

<%= form_for @store do |f| %> 
    ... 
    <%= f.fields_for :users, f.object.packers do |user| %> 
    <%= user.hidden_field :role %> 
    <%= user.text_field :name %> 
    <% end %> 
    ... 
<% end %> 

は厳密には必要ではない - あなたは、任意の変数を使用することができますが、それはそれが簡単に再利用可能なパーシャルを構築するために作るん。

関連する問題