まず、フィールド「名前」を持つユーザーモデルとフィールド「名前」を持つグループモデルがあると仮定します。
users と groups の間にモデルが必要です。これをグループ化と呼びましょう:
rails g model grouping user_name:string group_name:string
グループ化モデル (grouping.rb) では、次のように記述します。
belongs_to :user
belongs_to :group
ユーザーモデルでは:
has_many :groupings, :dependent => :destroy
has_many :groups, :through => :groupings
グループモデルでは:
has_many :groupings, :dependent => :destroy
has_many :users, :through => :groupings
ユーザーのプロファイルを編集または更新するには、_form ファイルに次のように記述します。
<div class="field">
<%= f.label :group_names, "Groups" %>
<%= f.text_field :group_names %>
</div>
最後に、ユーザー クラスは、フォームからの情報をどう処理するかを認識している必要があります。user.rb に挿入します。
attr_writer :group_names
after_save :assign_groups
def group_names
@group_names || groups.map(&:name).join(' ')
end
private
def assign_groups
if @group_names
self.groups = @group_names.split(/\,/).map do |name|
if name[0..0]==" "
name=name.strip
end
name=name.downcase
Group.find_or_create_by_name(name)
end
end
end
assign_groups は空白を削除し、すべての単語を小文字にするため、冗長なタグはありません。
これで、ユーザーのプロファイルの表示ファイルでユーザーのグループを表示できます。
<p>Groups:
<% @user.groups.each do |group|%>
<%= group.name %>
<% end %>
</p>
うまくいけば、それは役に立ちます。