2011-05-23 65 views
0

用戶可以註冊爲藝術家。所有的用戶現在需要做的是,提供他的電子郵件。將save方法與update_attributes結合使用。這是常見的嗎?

在Artist控制器中,def create。難道是很正常的事情,如:

def create 
    @artist = current_user 

    respond_to do |format| 
     if @artist.update_attributes(params[:user]) # params[:user] contains email 
     @artist.is_artist = true 
     @artist.save 
.... 

在我的用戶模型中,我有:

attr_accessible :email 

這意味着,我不能簡單地做@ artist.update_attributes(:is_artist =>真) 。我將不得不使用save方法。這種方法是常見的嗎?或者,還有更好的方法?

回答

0

您可以在模型中定義before_create方法:

class User < ActiveRecord::Base 
    ... 
    before_create :fill_fields 
    def fill_fields 
    is_artist = true 
    end 
end 
+0

我沒有一個藝術家的模型。我有一個用is_artist和電子郵件列 – 2011-05-23 10:44:44

+0

的用戶模型,藝術家就是例子。我會在我的答案中更正代碼。 – Hck 2011-05-23 10:48:23

+0

嗯,但用戶已經註冊/創建..用戶正在註冊爲藝術家 – 2011-05-23 11:03:24

0

我會做到以下幾點:

月1日:我沒有傷口設立ArtistController,如果你沒有一個藝術家模型。而我會在你的UserController中添加非RESTful方法,並推動FPGA實現邏輯到模型......

# config/routes.rb 
    resources :users do 
    member {post 'signup_as_artist'} 
    end 

    # UserController 

    def signup_as_artist 
    @user = User.find(params[:id]) 
    @user.signup_as_artist 
    end 

    # User 

    def signup_as_artist 
    self.update_attribute :is_artist, true 
    end 

好運

相關問題