2016-09-09 2 views
0

간단한 연결을 사용하여 워크 플로에 대해 user.email을 표시하려고합니다. 나는 것을 실행하면간단한 연결은 콘솔에서 작동하지만 응용 프로그램에서는 작동하지 않습니다.

def mail_notify_engineering 
    @workflow = Workflow.where("Title like ?", "Engineer") 
    @workflow = @workflow.first 
    $temp1 = @workflow 
    $temp2 = @workflow.user.email 

, 나는 내가 콘솔에서 명령을 실행하는 경우, 작동하는 것 같다, 그러나

NoMethodError in ApplicationController#notify_engineering 
undefined method `email' for #<Workflow:0xb1ba8b8> 

Rails.root: C:/Users/cmendla/RubymineProjects/product_development 

Application Trace | Framework Trace | Full Trace 
app/mailers/application_mailer.rb:37:in `mail_notify_engineering' 
app/controllers/application_controller.rb:19:in `notify_engineering' 
Request 

Parameters: 

None 

를 얻을.

>> @workflow = Workflow.where("Title like ?", "Engineer") 
    Workflow Load (3.0ms) EXEC sp_executesql N'SELECT [pd].[workflows].* FROM [pd].[workflows] WHERE (Title like N''Engineer'')' 
#<ActiveRecord::Relation [#<Workflow id: 3, title: "Engineer", user_id: 1, created_at: "2016-09-02 18:28:29", updated_at: "2016-09-02 18:28:29">]> 
>> @workflow = @workflow.first 
#<Workflow id: 3, title: "Engineer", user_id: 1, created_at: "2016-09-02 18:28:29", updated_at: "2016-09-02 18:28:29"> 
>> $temp2 = @workflow.user.email 
"[email protected]" 
    User Load (2.0ms) EXEC sp_executesql N'SELECT [pd].[users].* FROM [pd].[users] WHERE [pd].[users].[id] = @0 ORDER BY [pd].[users].[id] ASC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY', N'@0 int', @0 = 1 [["id", 1]] 

두 모델은 다음과 같습니다 협회는 콘솔에서 작동하는 경우

class Workflow < ActiveRecord::Base 
    belongs_to :user, :class_name => 'Workflow', foreign_key: 'user_id' 

    validates_presence_of :title 
    validates_presence_of :user_id 

    validates_uniqueness_of :title, :scope => :user_id 

end 



class User < ActiveRecord::Base 
    has_many :workflows 

표는

TABLE pd.workflows ( 
    id INT IDENTITY NOT NULL, 
    title NVARCHAR(4000) NULL, 
    [user_id] INT NULL, 
    created_at DATETIME NOT NULL, 
    updated_at DATETIME NOT NULL, 
    CONSTRAINT PK__workflow__3213E83FA1246A13 PRIMARY KEY (id) 
) 


TABLE tl.users ( 
    id INT IDENTITY NOT NULL, 
    login VARCHAR(50) NULL, 
    group_strings TEXT NULL, 
    name VARCHAR(50) NULL, 
    ou_strings VARCHAR(150) NULL, 
    created_at DATETIME NOT NULL, 
    updated_at DATETIME NOT NULL, 
    email VARCHAR(50) NULL, 
    signature TEXT NULL, 
    operating_system VARCHAR(50) NULL, 
    notes_path VARCHAR(50) NULL, 
    client VARCHAR(50) NULL, 
    outlook_path VARCHAR(150) NULL, 
    CONSTRAINT PK_users PRIMARY KEY (id) 
) 

이며, 응용 프로그램으로 실행할 때 왜 작동하지?

답변

1

당신입니다 self_referencing 모델 Workflow에 너무

@workflow = Workflow.first 
@workflow.user 

자동 Workflow

user_id를 검색합니다

class Workflow < ActiveRecord::Base 
    belongs_to :user 
end 

레일에 id = @workflow.user_id

변경 당신에게 연결을 Workflow를 반환합니다

관련 문제