需要一些建议。 我正在做一个关于RoR的项目,并且不确定我应该使用模型之间的关系。我有三个模型 - 用户,电路板和消息。 开始很简单: 用户有一个Wall,它属于User,所以我想这应该是:
class User < ActiveRecord::Base
has_one :board
end
class Board < ActiveRecord::Base
belongs_to :user
end
最后一个模型是消息,这是我的问题。消息属于用户因为他写的,但它也属于Wall,因为他把它写在墙上(它可以是属于其他用户的Wall)。
我使用了简单的解决方案:
class Theme < ActiveRecord::Base
belongs_to :board
belongs_to :user
end
class User < ActiveRecord::Base
has_one :board
has_many :themes
end
class Board < ActiveRecord::Base
belongs_to :user
has_many :themes
end
但我不满足于此,并认为它并不完美。我正在寻找一个能让我写下来的解决方案:
user.themes.create(:board => @board)
(现在它没有填写user_id字段)
我希望对于那些在Ruby on Rails模型中比我更有经验的人来说,这不是一项艰巨的任务。我会很感激你的建议,谢谢。
答案 0 :(得分:0)
正常情况下你会使用一些认证宝石。然后你有current_user变量,它包含当前正在调用该动作的用户的对象。
然后,当用户创建主题时,您可以向控制器添加一条简单的行来设置用户:
@theme.user = current_user
您还应该使用像cancan这样的gem来管理中心文件中的授权。你会在这里找到一个railscast:
http://railscasts.com/episodes/192-authorization-with-cancan