2016-05-19 7 views
0

In meiner Rails-Anwendung habe ich zwei Modelle namens "Benutzer" und "Store". An user belongs_to store und A store has_many users. Ein Benutzer hat viele Attribute wie Name, E-Mail und Rolle etc. In einem der Formulare für den Speicher möchte ich verschachtelte Formulare verwenden, um Benutzer zu erstellen, deren Rolle Packer ist. Das Problem ist, wenn ich verschachtelte Formulare verwende, werden auch andere Benutzer aufgelistet, deren Rolle nicht "Packer" ist. Ich möchte speziell verschachtelte Formulare nur für Benutzer verwenden, deren Rolle "Packer" ist. Gibt es eine Möglichkeit, Benutzer zu filtern mit Rolle als ‚Packer‘ in verschachtelten FormenFilter für verschachtelte Formulare - Ruby on Rails

Antwort

0

So starten Sie mit Ihnen eine „short-cut“ Beziehung einrichten möchten:

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) ein optionales record_object Argument, können Sie die Datensätze gesetzt verwendet:

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

Mit f.object nicht unbedingt erforderlich ist - Sie jede Variable verwenden könnte, aber es macht es einfacher, wiederverwendbare Teile zu bauen.