ruby-on-rails
  • methods
  • rake
  • 2010-09-17 86 views 1 likes 
    1

    这是错误我得到:为什么我会为我的模型中存在的属性获取NoMethodError?

    ContactPostalcardsController#skip (NoMethodError) "undefined method `status=' for #<ContactPostalcard:0x2b21433d64b0>" 
    

    这是代码调用它,并试图将值分配给状态属性为ContactPostalcard(模型):

    def skip 
    
        @contact_postalcard = ContactPostalcard.new(params[:contact_postalcard]) 
        @contact_postalcard.contact_id = params[:contact_id] 
        @contact_postalcard.postalcard_id = params[:postalcard_id] 
    
        @contact_postalcard.status = "skipped" 
        @contact_postalcard.date_sent = Date.today 
        @contact_postalcard.date_created = Date.today 
    
        if @contact_postalcard.save 
         render :text => 'This email was skipped!' 
    
        end 
        end 
    

    这是模型提及。注意“注解”输出显示的状态为一个属性:

    class ContactPostalcard < ActiveRecord::Base 
        attr_accessible :title, :contact_id, :postal_id, :postalcard_id, :message, :campaign_id, :date_sent, :status 
    
    
        belongs_to :contact 
        belongs_to :postalcard 
    
        alias_attribute :body, :message 
        alias_attribute :subject, :title 
    
        named_scope :nosugar, :conditions => { :sugarcrm => false } 
    
        def company_name 
        contact = Contact.find_by_id(self.contact_id) 
    
        return contact.company_name 
    
        end 
    
        def asset 
        Postalcard.find_by_id(self.postalcard_id) 
        end 
    
        def asset_class 
        Postalcard.find_by_id(self.postalcard_id).class.name 
        end 
    
    end 
    
    
    
    # == Schema Information 
    # 
    # Table name: contact_postalcards 
    # 
    # id   :integer   not null, primary key 
    # title   :string(255) 
    # contact_id :integer 
    # postalcard_id :integer 
    # message  :text 
    # campaign_id :integer 
    # date_sent  :datetime 
    # created_at :datetime 
    # updated_at :datetime 
    # postal_id  :integer 
    # sugarcrm  :boolean   default(FALSE) 
    # status  :string(255) 
    # 
    

    我不清楚为什么我不断收到“未定义的方法” - 我已经添加了状态属性(它之前就已经失踪,但使用迁移然后倾斜),所以需要一些帮助......谢谢。

    回答

    1

    您是否在运行迁移后重新启动了Rails应用程序?如果你在生产模式下运行,Rails会缓存你的类,直到你重新启动它为止。由于状态在迁移之前不是属性,因此Rails不会为它添加访问器方法,这可以解释为什么status=未定义。

    +0

    嗯......我做了一个'heroku重启'的命令,我仍然收到错误.... – Angela 2010-09-17 23:42:40

    +0

    虽然这只是问题的一部分,但这是我需要的最终解决方案,作为一个一起练习。 – Angela 2010-10-01 00:09:35

     相关问题

    • 暂无相关问题^_^