I’m looking for some advice on how to follow best practices. In my app
users can create “reports”. A report belongs to an employee.
Therefore, when creating a report I want to check, that the chosen
employee actually exists and that the user are allowed to use this
employee. To do this, I’ve made a custom validation method (in the
report model), that checks whether the employee exists or not and
whether the user can use this employee. If something’s wrong, it call
errors.add_to_base “some text”. The problem is, that “some text” needs
to be translated according to what user is viewing the page. So
essentially, the model needs to have access to both action view methods
as well as the session (in order to determine current language). This is
afaik very bad practice (to give the model this access).
Another solution would be to call @report.errors_add_to_base from the
controller - however, that would break the idea of “thin controllers,
fat models”. Also, it will lead to ugly such as
@report.errors.add_to_base t(:error_msg) if something_wrong?
if @report.validates? && save # (save seems to clear errors, so I need
to call validates before save)
show error page
So, dear fellow rails users, what do you think of this problem? What
would you do here? Any advice very appreciated, thanks.