полиморфная ассоциация и установка значения по умолчанию для актива - PullRequest
0 голосов
/ 04 января 2012

Вопрос новичка. У меня есть следующие модели:

class Asset < ActiveRecord::Base
  belongs_to :assetable, :polymorphic => true
  #paperclip
  has_attached_file :asset, 
    :hash_secret => "my-secret",
    :url => "/images/:hash_:basename_:style.:extension",
    :path => UPLOAD_PATH + "/:hash_:basename_:style.:extension",
    :styles => { :medium => "300x300>", :thumb => "75x75>"  

    }
end

class Location < ActiveRecord::Base
    has_many :assets, :as => :assetable, :dependent => :destroy
end

class MenuItem < ActiveRecord::Base
    has_many :assets, :as => :assetable
end

У моего актива есть свойство под названием description. Если тип_семейного элемента - это "MenuItem", а описание - nil, я бы хотел, чтобы описание было связано с телом menu_item. Как бы я это сделал?

ТНХ

1 Ответ

1 голос
/ 04 января 2012
class Asset < ActiveRecord::Base
    before_save :set_description

    private

    def set_description
        self.description ||= assetable.body if assetable.is_a?(MenuItem)
    end
end

Или изменить метод доступа

def description
    return self[:description] unless self[:description].blank?
    assetable.description if assetable.is_a? MenuItem
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...