2016-02-12 2 views
0

Я хочу создать собственную проверку внутри модели. Но ничего взамен, когда я пытался получить это значение из переменнойКак получить значение объекта в модели ActiveRecord?

Это моя модель

validate :permanent_event_check 

private 

    def permanent_event_check 
    param_activity = @activity 

    # puts "param_activityparam_activityparam_activity" 
    # puts @activity 
    # puts param_activity 
    # puts "param_activityparam_activityparam_activityparam_activity" 

    if param_activity.permanent == "false" 
     if param_activity.start_at == "" || param_activity.end_at == "" 
     @activity.errors[:base] << "You can't leave start and end date blank with Permanent Event" 
     return false 
     end 
    end 
    end 

Это мой контроллер

def create 
    @activity = admin_current_user.activities.build(activity_param) 
    if @activity.save 
     flash[:success] = "Activity Created!" 
     redirect_to admin_dashboard_url 
    else 
     render 'new' 
    end 
    end 

private 

    def activity_param 
    params.require(:activity).permit(:name,:details,:start_at,:end_at, 
            :activity_image01_url,:activity_image02_url,:activity_image03_url, 
            :youtube_url,:capacity,:booking_status,:rules,:apply_details, 
            :payment_price,:payment_need,:avaliable,:rating,:temple_id) 
    end 

Но возвращать ноль, когда я пытался получить значение из @activity внутри моей модели.

Как я могу это исправить? Спасибо!

ответ

1

Вы не можете назначить объект, подобный этому в модели, вместо этого вы берете себя.

validates :permanent_event_check 
 

 
private 
 

 
    def permanent_event_check 
 
    if self.permanent == "false" 
 
     if self.start_at == "" || self.end_at == "" 
 
     self.errors[:base] << "You can't leave start and end date blank with Permanent Event" 
 
     return false 
 
     end 
 
    end 
 
    end

0

Я предполагаю, что перманент булево, start_at и end_at - даты и времени.

validate :permanent_event_check, unless :permanent 

private 

def permanent_event_check 
     # if start_at and end_at are not filled they will be nil which is interpreted as false 
    unless start_at && end_at 
     self.errors[:base] << "You can't leave start and end date blank with Permanent Event" 
    end 
    end 
Смежные вопросы