用户可以创建组织,然后他可以将其他用户作为他的组织的主持人。下面的方法显示了组织的创建方式。
def create
@organization = current_user.organizations.build(organization_params)
# Confirm organization is valid and save or return error
if @organization.save!
# New organization is saved
respond_with(@organization) do |format|
format.json { render :json => @organization.as_json }
end
else
render 'new', notice: "Unable to create new organization."
end
end
我应该如何为组织创建主持人。我尝试使用has_many但它失败了。有人可以帮帮我吗?
更新
组织模式
class Organization < ActiveRecord::Base
has_many :moderators
has_many :users, :through => :moderators
end
的usermodel
class User < ActiveRecord::Base
enum role: [:user, :moderator, :organization, :admin]
after_initialize :set_default_role, :if => :new_record?
def set_default_role
self.role ||= :user
end
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :moderators
has_many :organizations, :through => :moderators
end
主持人模型
class Moderator < ActiveRecord::Base
belongs_to :user
belongs_to :organization
end
当我创建新组织时,我的组织user_id是nil?
答案 0 :(得分:0)
看看has并且属于许多关系http://apidock.com/rails/v4.2.1/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many,因为一个用户可以是许多组织和组织的主持人,可以有很多主持人。此外,您应该调用@organization.save!
而不是调用@organization.save
,因为如果保存不成功,它将抛出错误。您希望保存结果为布尔值,以便您的条件正常工作