Giter VIP home page Giter VIP logo

Comments (9)

calmyournerves avatar calmyournerves commented on May 26, 2024

Can you describe what you exactly mean?
Normally, the API which Her connects to defines the schema/models and interacts with a database.

from her.

magagnon avatar magagnon commented on May 26, 2024

Not sure if that's what the OP meant but sometimes it's necessary to define attributes on which validation has to be performed.

I'm using the active_attr gem with her to achieve this.
https://github.com/cgriego/active_attr

from her.

remi avatar remi commented on May 26, 2024

I'm in the process of making Her compatible with ActiveModel (see the activemodel branch). I might add active_attr in it too!

from her.

calmyournerves avatar calmyournerves commented on May 26, 2024

We had the same problem. Our current solution (even if not optimal) is to make an API call via Her to get an empty object with all attributes where needed (mostly form building). This prevents us from defining attributes in every app that uses Her models.

from her.

martijnschouwe avatar martijnschouwe commented on May 26, 2024

The main goal was for validation indeed

from her.

pencil avatar pencil commented on May 26, 2024

Validation should be done by the API and not by the application using the API as this would lead code duplication.

from her.

martijnschouwe avatar martijnschouwe commented on May 26, 2024

When using rails it takes the model validation to return errors in forms and you don't goto the API until you know that your model is valid, but if HER is made compatible with ActiveModel then it should be sufficient as that also concludes validation

from her.

remi avatar remi commented on May 26, 2024

Hey guys, I just released her-0.5(.1) which adds an attributes method to model classes. With it, you can actually use ActiveModel::Validations and ActiveModel::Dirty modules (that are now included in all models):

class User
  include Her::Model

  attributes :fullname, :email
  validates :fullname, :presence => true
  validates :email, :presence => true
end

@user = User.new(:fullname => "Tobias Fünke")

@user.fullname_changed? # => true
@user.changes # => { :fullname => [nil, "Tobias Fünke"] }

@user.valid? # => false
@user.errors.full_messages # => ["Email can't be blank"]

@user.save
# POST /users&fullname=Tobias+Fünke will still be called, even if the user is not valid

I’m not a big fan of validating data on the client (since the API always has the last word before creating/updating resources) but it can be nice to manually validate the data before calling the API.

from her.

remi avatar remi commented on May 26, 2024

I’m gonna close this issue now since there’s now a way to add a schema to models (with the attributes method).

from her.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.