Как связать атрибуты из разных классов Rails - PullRequest
0 голосов
/ 13 октября 2018

Я сталкиваюсь с трудностями, связанными с Rails.В этом случае у меня есть модель для местных жителей и модель для идентификации токена пользователя (который пришел из другого APi).У места есть рейтинг (оценка от 0 до 5), связанный с ним, и у каждого пользователя есть много оценок, но только один для каждого места.Пытаясь сделать это, я создаю новую модель с атрибутом рейтингов и хочу связать идентификатор рейтинга только с одним идентификатором места.

# 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 голосов
/ 14 октября 2018

Во-первых, у вас есть опечатка в 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.Я надеюсь, у вас есть идея.

...