Ruby on rails 3 在用户和组之间正确创建联接操作
我在尝试根据用户在成员表单new.html.erb中输入的名称为用户创建成员身份时遇到问题 user.rbRuby on rails 3 在用户和组之间正确创建联接操作,ruby-on-rails-3,Ruby On Rails 3,我在尝试根据用户在成员表单new.html.erb中输入的名称为用户创建成员身份时遇到问题 user.rb has_many :memberships, :dependent => :destroy has_many :groups, :through => :memberships class Membership < ActiveRecord::Base attr_accessible :user_id, :group_id belongs_to :use
has_many :memberships, :dependent => :destroy
has_many :groups, :through => :memberships
class Membership < ActiveRecord::Base
attr_accessible :user_id, :group_id
belongs_to :user
belongs_to :group
end
has_many :memberships, :dependent => :destroy
has_many :users, :through => :memberships
<%= form_for(@membership) do |f| %>
...
#error validation
...
<div class="field">
<%= f.label :group %><br />
<%= f.text_field :group %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
def group_name
if self.group
@group_name ||= self.group.name
end
end
def group_name=(group_name)
@group_name = group_name
self.group = Group.find_by_name(@group_name)
end
会员资格。rb
has_many :memberships, :dependent => :destroy
has_many :groups, :through => :memberships
class Membership < ActiveRecord::Base
attr_accessible :user_id, :group_id
belongs_to :user
belongs_to :group
end
has_many :memberships, :dependent => :destroy
has_many :users, :through => :memberships
<%= form_for(@membership) do |f| %>
...
#error validation
...
<div class="field">
<%= f.label :group %><br />
<%= f.text_field :group %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
def group_name
if self.group
@group_name ||= self.group.name
end
end
def group_name=(group_name)
@group_name = group_name
self.group = Group.find_by_name(@group_name)
end
会员控制器
def create
@group = Group.find_by_name(:group)
@membership = current_user.memberships.build(:group_id => @group.group_id)
if @membership.save
flash[:notice] = "You have joined this group."
redirect_to :back
else
flash[:error] = "Unable to join."
redirect_to :back
end
end
def create
@membership = current_user.memberships.build(params[:membership])
if @membership.save
flash[:notice] = "You have joined this group."
redirect_to :back
else
flash[:error] = "Unable to join."
redirect_to :back
end
end
会员资格-\u form.html.erb
has_many :memberships, :dependent => :destroy
has_many :groups, :through => :memberships
class Membership < ActiveRecord::Base
attr_accessible :user_id, :group_id
belongs_to :user
belongs_to :group
end
has_many :memberships, :dependent => :destroy
has_many :users, :through => :memberships
<%= form_for(@membership) do |f| %>
...
#error validation
...
<div class="field">
<%= f.label :group %><br />
<%= f.text_field :group %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
def group_name
if self.group
@group_name ||= self.group.name
end
end
def group_name=(group_name)
@group_name = group_name
self.group = Group.find_by_name(@group_name)
end
...
#错误验证
...
我希望它做的是找到输入的组(如果存在),并在memberships表中创建相应的表条目。只是不确定我所做的是否正确。有什么建议吗?您的代码现在无法工作的原因是因为这行代码:
@group = Group.find_by_name(:group)
应该是这样的(我不记得很抱歉)
在下一行调用错误,因为@group
是nil
但无论如何,您都应该在模型中使用虚拟属性之类的东西来处理这种类型的逻辑
会员资格。rb
has_many :memberships, :dependent => :destroy
has_many :groups, :through => :memberships
class Membership < ActiveRecord::Base
attr_accessible :user_id, :group_id
belongs_to :user
belongs_to :group
end
has_many :memberships, :dependent => :destroy
has_many :users, :through => :memberships
<%= form_for(@membership) do |f| %>
...
#error validation
...
<div class="field">
<%= f.label :group %><br />
<%= f.text_field :group %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
def group_name
if self.group
@group_name ||= self.group.name
end
end
def group_name=(group_name)
@group_name = group_name
self.group = Group.find_by_name(@group_name)
end
表格
<div class="field">
<%= f.label :group_name, "Group" %><br />
<%= f.text_field :group_name %>
</div>
你的代码怎么了?日志中有错误吗?它没有从groups表中找到group_id。给我一个错误“nil:NilClass的未定义方法'group_id'。我不确定是表单问题还是控制器问题,单行@group=group.find_by_name(params[:membership][:group])正是我想要的,谢谢