我正在开发一款包含users
,venues
和groups
的应用。我已经创建了我的模型,我对它们非常满意,但是我对控制器感到有些困惑。我大多数都有has_many :through
个关系。例如,我有user
模型,venue
模型和user_venue
模型,其中包含user_id
,venue_id
和admin column
。我想在创建场地时自动使用户成为管理员(增加管理列1),同时也构建实例。其他用户也可以在不成为管理员的情况下将自己与场地联系起来。
我的模型如下:
class User < ActiveRecord::Base
has_many :venues, through: :user_venues
has_many :user_venues
end
class Venue < ActiveRecord::Base
has_many :users, through: :user_venues
has_many :user_venues
end
class UserVenue < ActiveRecord::Base
belongs_to :users
belongs_to :venues
validates :user_id, presence: true
validates :venue_id, presence: true
end
让用户创建场地并成为管理员,并允许其他用户创建关联的最佳方式是什么。我假设一旦初始场地被创建,它只是使用user_venue
控制器的问题,我只是在努力处理抽象模型。我也想过要求一些建议可以确保它不是一个安全噩梦通过抨击它! group
模型的工作方式相同。
我相信这对某人来说是一个简单的答案!
修改
我已经在这个工作了4个小时了,现在仍然无法看到解决方案,我甚至无法在网上找到它。到目前为止,我对Venue Controller
的创建定义如下:
def create
admin = 1
@user = current_user
@venue = Venue.create(venue_params)
@user_venue = UserVenue.new user_id: @user.id, venue_id: @venue.id, admin: admin
@user_venue.save
end
遗憾的是,这仍然只能完成venues
表而不是user_venues
表。
答案 0 :(得分:0)
我解决了......事实证明我只需要将belongs_to
关系设为非复数并使用以下创建方法:
@venue = Venue.create(venue_params)
@venue.users << current_user
它建立了这种关系。现在我只需要编写代码,在create!...
上向user_groups
表添加一个属性