如何关联来自不同类的属性Rails

时间:2018-10-13 18:40:53

标签: ruby-on-rails associations

我在Rails上遇到困难。在这种情况下,我有一个针对本地人的模型,以及一个用于标识用户令牌(来自另一个APi)的模型。地点具有与之相关的评分(分数从0到5),每个用户都有很多评分,但每个地点只有一个。尝试执行此操作,我创建了一个具有Ratings属性的新模型,并且希望将一个等级ID与一个地方ID关联起来。

# Description of User Identifier Class
class UserIdentifier < ApplicationRecord
  has_many :favorite_locals, dependent: :destroy
  has_many :user_rate, dependent: :destroy
  validates :identifier, presence: true
  validates_numericality_of :identifier
  validates_uniqueness_of :identifier

  def self.find_favorites(params)
    UserIdentifier.find(params).favorite_locals
  end
end

# Model of Users Rates 
class UserRate < ApplicationRecord
    belongs_to :user_identifier
    validates :rating, numericality: true
    validates_numericality_of :rating, less_than_or_equal_to: 5
    validates_numericality_of :rating, greater_than_or_equal_to: 0
    validates :user_identifier, presence: true
end

1 个答案:

答案 0 :(得分:0)

首先,您在has_many :user_rate, dependent: :destroy中有一个错字。关联应命名为user_rates,因此UserIdentifier模型的正确代码为:

class UserIdentifier < ApplicationRecord
  has_many :favorite_locals, dependent: :destroy
  has_many :user_rates, dependent: :destroy
  # ...
end

第二,目前尚不清楚项目中“ place”实体的命名方式。如果是FavoriteLocal,则这是您需要的代码:

class UserRate < ApplicationRecord
    belongs_to :user_identifier
    belongs_to :favorite_local
    # ...
end

如果这是另一个模型,则只需在belongs_to :user_identifier下方定义归属关联。我希望你有主意。