Помогите с активными отношениями записи - PullRequest
0 голосов
/ 30 декабря 2010
class CreateActivities < ActiveRecord::Migration
  def self.up
    create_table :activities do |t|
      t.references :user
      t.references :media
      t.integer :artist_id

      t.string :type
      t.timestamps
    end
  end

  def self.down
    drop_table :activities
  end
end

class Fan < Activity
  belongs_to :user, :counter_cache => true
end

class Activity < ActiveRecord::Base
  belongs_to :user
  belongs_to :media
  belongs_to :artist, :class_name => 'User', :foreign_key => 'artist_id'
end

class User < ActiveRecord::Base
  has_many :activities
  has_many :fans
end

Я тоже пытался изменить свою модель деятельности, но безуспешно

class Activity < ActiveRecord::Base
  has_many :activities, :class_name => 'User', :foreign_key => 'user_id'
  has_many :activities, :class_name => 'User', :foreign_key => 'artist_id'
end

Стоит отметить. Деятельность - это ИППП. Фан наследует от Activity.

В консоли я делаю:

# Create a fan object. User is a fan of himself
fan = Fan.new
 => #<Fan id: nil, user_id: nil, media_id: nil, artist_id: nil, type: "Fan", comment: nil, created_at: nil, updated_at: nil> 

# Assign a user object
fan.user = User.first
 => #<User id: 1, genre_id: 1, country_id: 1, ....

# Assign an artist object
fan.artist_id = User.first.id
 => 1 

# Save the fan object
fan.save!
 => true 

Activity.last
 => #<Fan id: 13, user_id: 1, media_id: nil, artist_id: 1, type: "Fan", comment: nil, created_at: "2010-12-30 08:41:25", updated_at: "2010-12-30 08:41:25">

Activity.last.user
 => #<User id: 1, genre_id: 1, country_id: 1, .....

Но ...

Activity.last.artist
 => nil 

Почему Activity.last.artist возвращает ноль?

Ответы [ 2 ]

0 голосов
/ 02 января 2011

Хорошо. Кажется, у меня было

attr_accessor :artist

в моей модели вентилятора. Убрал его и теперь работает соответственно

0 голосов
/ 30 декабря 2010

Я заметил, что artist_id всегда равен nil, когда я пытаюсь создать объект вентилятора с помощью .create !, как таковой:

Fan.create!(:user => User.first, :artist => User.first.id)
 => #<Fan id: 43, user_id: 4, media_id: nil, artist_id: nil, type: "Fan", comment: nil, created_at: "2010-12-30 10:05:19", updated_at: "2010-12-30 10:05:19"> 

Fan.create!(:user => User.first, :artist_id => User.first.id)
 => #<Fan id: 44, user_id: 4, media_id: nil, artist_id: nil, type: "Fan", comment: nil, created_at: "2010-12-30 10:06:33", updated_at: "2010-12-30 10:06:33"> 

Fan.create!(:user => User.first, :artist => User.first)
 => #<Fan id: 45, user_id: 4, media_id: nil, artist_id: nil, type: "Fan", comment: nil, created_at: "2010-12-30 10:06:59", updated_at: "2010-12-30 10:06:59">

Почему это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...