2016-07-29 13 views
1

私は、Ectoにfirst_namelast_nameフィールドを組み合わせる最良の方法を理解しようとしています。私はUser.nameを使用することができますアクティブなレコードのインスタンスを作成するときにRubyにActive Recordインスタンスメソッドと同等のEctoはありますか?

def name 
    self.first_name + self.last_name 
end 

はレールのアクティブなレコードでは私のようなインスタンスメソッドを作成することができます。姓と名を組み合わせる必要がある場合や、Ectoモデルに他のロジックを適用する必要がある場合は、どうすればそれをやりますか?これは簡単な例であり、私はそれをただちに連結することができますが、もっと複雑なロジックがあればどうしますか?

答えて

3

Ecto.Schema(通常はRepoメソッドを呼び出して取得)をメソッドに渡す必要があります。そこからモデルの必須フィールドにアクセスし、モデルの操作を実行して結果を返します。モデルUser.exファイル内

def name(user) do 
    user.first_name <> user.last_name 
    end 

置き、それのようなもの、そしてどこでもあなたのアプリ内からUser.name(user)を呼び出します。 (MyApp.User.name(user)の場合、Userにエイリアスがありません)

2

私はエリクシルを書くのと同じ問題を抱えていました。インスタンスメソッドitchは、オブジェクトを考えることから来ています。エリクサーはこれらのことが間違っていると思われる関数型言語です。私が与えることができる最良のアドバイスは、これが現実のものであり、オブジェクトの代わりにデータを考えようとすることです:

1

これは通常Ecto/PhoenixのViewの懸念事項です。これは、スキーマで通常行うことではありません。

関連する問題