Ruby on Rails 3.2.2를 사용하고 있으며 속성 값이 으로 설정되어 있는지 확인하는 방법이 있는지 알고 싶습니다. 프로세스 흐름 중에을 설정하십시오. 즉, title
, content
, updater_user_id
이라는 속성을 가진 Article
클래스가 있습니다. 내 컨트롤러에서프로세스 흐름 중에 속성 값이 설정되었는지 확인하는 방법은 무엇입니까?
나는이 :
# @article.title
# => "Sample title"
# @article.content
# => "Sample content"
# @article.updater_user_id
# => 1
# @current_user.id
# => 1 # Note: This value is the same as '@article.updater_user_id'
@article.updater_user_id = @current_user.id
# params[:article]
# => {:article => {:title => 'Sample title 2', :content => 'Sample content 2'}}
@article.update_attributes(params[:article])
나는 @article.changed
방법을 사용하려고하지만 그것이 작동하고 싶은대로 작동하지 않습니다. 사실, 그 방법은 반환
@article.changed
# => ['title', 'content'] # Note: There isn't the 'updater_user_id' attribute
즉, 나는 updater_user_id
는 그 값이 변경되지 않은 경우에도 프로세스 흐름 중에 설정되어 있는지 확인하고 싶습니다. 나의 사용 사례는 이 일 때 Article
개체를 저장하기 전에 프로세스 흐름 중에 updater_user_id
이 (적어도 한 번 이상) 설정되어야 함을 요구합니다. 프로세스 흐름 중에 설정되지 않으면 오류가 발생합니다.
가능합니까? 그렇다면 어떻게 만드 는가?
잠깐, 속성 값이 변경되지 않았더라도 기다렸다가 설정했는지 확인하고 싶습니까? 이것의 유스 케이스는 무엇입니까? –
@Andrew Marshall - Article 객체가 저장 될 때마다'updater_user_id'가 설정되도록 요구하고 싶습니다. 그렇지 않으면 오류 또는 이와 유사한 것을 발생시키고 싶습니다. – user12882
아하이 봐요. 나는 그런 식으로 강요하는 코드의 큰 팬이 아니지만 그것은 나뿐입니다. 또한 AFAIK에는 내장 레일 구조가 없습니다. 'updater_user_id ='를 오버라이드시키고'after_save'를 추가함으로써 아마도 이것을 달성 할 수있을 것입니다. 그러나 여러 가지 방법으로 설정하고 보편적으로 시행하기가 어려울 수 있습니다. –