2016-07-27 42 views
0

我在UsersController如何为Rails has_many关联创建一个“if语句”?

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

    if current_user.id != params[:id] #! need to fix this 
    @answer = Answer.new 
    else 
    @answer = Answer.find(params[:id]) 
    end 

以下,其中通过测验模型中的每个用户的has_many答案。如何编写if语句,如果答案对于特定用户而言是空白的,它将跳转到创建新测验? (如果不是,则显示该信息)。

+0

那么我有点不清楚你在这里设置的所有细节 - 没有测验或答案信息 - 但如果你想检查一个用户是否采取了特定的测验为什么不为用户创建一个交叉连接表,测验并且只有在他们参加测验时才会设置(或者如果您想要,可以使其更加复杂)。我的信念是,你在答案上的基础是错误的,你应该把它放在测验上?但是我正在对未见过的东西进行假设( – MageeWorld

+1

)虽然很多人都可能在这种情况下在暗处刺伤,但提供更多信息可能会更有帮助,例如当您说用户有许多答案通过测验模型,你指的是一个实际的'has_many:答案,通过::测验'关系,或只是说用户has_many测验,并且测验has_many答案?或许还会放置你的模型代码? –

回答

0

我不清楚你的代码做了什么不想要的检查。如果你只是想检查是否有用户(假设signed_in用户)想要有条件地显示动作,我想你可以试试这个: -

##assuming user has_many answers 
##answer belongs_to user 
def show 
    ##get the user 
    @user = User.find(params[:id]) 
    ##verify if answer is present 
    if @user.answers.present? 
    @answer = @user.answers 
    else 
    @answer = @user.answers.new 
    end 
end 

上述逻辑可用于具有通过协会多为好,只需要通过模型

更改为希望它能帮助:)

+0

请为上帝的缘故不要使用,除非 - 其他 –

+0

更新...谢谢你的收获.. @ Deepak – Milind

+0

@Milind我用这个,但由于某种原因,它不允许我访问其他用户的测验,给我一个to_key错误,如果是这样,提交时的回答不会显示在文本字段之后。 – helpisgood