2016-09-09 10 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

あなたはとても

@workflow = Workflow.first 
@workflow.user 

id = @workflow.user_id

変更Railsは自動的にWorkflow

user_idを検索します

class Workflow < ActiveRecord::Base 
    belongs_to :user 
end 

に関連して、あなたにWorkflowを返しますself_referencingWorkflowへのモデルです

関連する問題