Closed AvaelKross closed 8 years ago
Hey @AvaelKross! No idea why it didn't work, will have to try to make a release and get back to you, thanks for reporting!
Regarding your new function, thanks for the heads up, that example is wrong. The way to capture a function, instead of invoking it, is via &your_func/n
, where n
is the number of arguments to the function. In your case, that would be
# config.exs
(...)
extra_validation: &BlogPhoenix.User.validate/2
(...)
Check the official docs here for more information into this :)
@trenpixster It still does not work during mix release
.
As a temporary solution I made a fork where I call configs.user_schema.addict_validate
function explicitly in register.ex
. It's like a workaround, but may be useful for someone else
Any update on this?
I'm a newbie but according to this guy the config has to be an MFA tuple(don't know what that is)
Relevant links: https://github.com/bitwalker/distillery/issues/185#issuecomment-285924281 https://github.com/mrluc/deferred_config/blob/master/README.md
@rickyhan with latest versions of elixir/phoenix/this module, the following code works to me:
extra_validation: {AppName.ModelName, :addict_validate_method_name}
I dug into the source code and found the Addict.Helper.exec({mod, func}, args)
function. So I logged the module name and function name. The module name has Elixir appended in the front: Elixir.ModuleName.ModelName
Is it the expected scoping behavior?
@AvaelKross's solution solved this issue for me.
I'm very new to elixir, phoenix and addict, so maybe it's a dumb question. I created new app, added 'addict', configured it all properly - everything works well locally. Now I want to deploy my app, so I'm running
mix release
. First time I did it, I faced this error:I checked sys.config file and found that it fails on this line of config.exs:
It's being converted to this content in sys.config:
{extra_validation,#Fun<erl_eval.12.50752066>}
Then I found configs.md here and tried to replace this:
extra_validation: fn ({valid, errors}, user_params) -> {valid, errors} end
with this:extra_validation: BlogPhoenix.User.validation
Of course I added this to my User model:
Now 'mix release' fails with
undefined function BlogPhoenix.User.validate/0 (module BlogPhoenix.User is not available)
.Do you have any idea how to fix it and why initial code didn't worked at all?