0

需要一些建议。我正在做一个关于 RoR 的项目,不确定我应该使用模型之间的什么关系。我有三个模型——用户、板和消息。开头很简单:用户有一面墙,它属于用户,所以我猜应该是:

class User < ActiveRecord::Base
  has_one :board
end

class Board < ActiveRecord::Base
    belongs_to :user
end

最后一个模型是消息,我的问题来了。消息属于用户,因为他写了它,但它也属于墙,因为他把它写在墙上(它可以是属于其他用户的墙)。

我使用了简单的解决方案:

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 模型方面比我更有经验的人来说这不是一项艰巨的任务。我会很感激好的建议,谢谢。

4

1 回答 1

0

正常情况下,您会使用一些身份验证宝石,例如设计。然后你有 current_user 变量,其中包含当前调用操作的用户对象。

然后,当用户创建主题时,您向控制器添加一个简单的行来设置用户:

@theme.user = current_user

您还应该使用像 cancan 这样的 gem 来管理中央文件中的授权。你可以在这里找到一个 railscast:

http://railscasts.com/episodes/192-authorization-with-cancan

于 2011-10-20T11:42:56.910 回答