Has_one还是Has_many?

时间:2011-07-26 01:04:40

标签: ruby-on-rails ruby ruby-on-rails-3

我有四个型号。

Application, Permission, User and AppPermissions

我的AppPermission看起来像:

AppPermission   Application    Permission   User
      1              1              1         1
      2              1              2         2
      3              1              3         3
      4              1              4         4

因此,应用程序可以拥有不同用户的不同权限。

Model: AppPermission:
belongs_to :application
belongs_to :permission
belongs_to :user

申请,许可和用户怎么样?在哪里使用has_many through或has_one through?

2 个答案:

答案 0 :(得分:0)

Application:
has_many :users
has_many :permissions

对于用户,您需要更多信息,您是否有多个应用程序?如果是这样的话:

User:
has_many :applications
has_many :appPermissions

Permission:
has_many :appPermissions
belongs_to :application

答案 1 :(得分:0)

我没有看到has_many :through具有三向关联的用例。拥有用户的所有权限而不提及他们的应用程序是什么意义?最有可能你需要查询:

user.app_permissions.find_all_by_application_id(application).map(&:permission)

user.app_permissions.find_by_application_id_and_permission_id(application, permission)

这些查询所需的一切:

User:
has_many :app_permissions

AppPermission:
belongs_to :permission