Git Product home page Git Product logo

Comments (2)

solnic avatar solnic commented on June 14, 2024

Hmm, this works for me:

require 'rom-sql'
require 'rom-repository'

class Users < ROM::Relation[:sql]
  schema(:users) do
    attribute :id, Types::Serial
    attribute :name, Types::String
    attribute :type, Types::Coercible::String
  end
end

class Type < Struct.new(:value)
  def to_str
    value
  end
end

class UserRepo < ROM::Repository[:users]
  commands :create
end

config = ROM::Configuration.new(:sql, 'sqlite::memory')
config.register_relation Users

config.gateways[:default].connection.create_table(:users) do
  primary_key :id
  column :name, String
  column :type, String
end

container = ROM.container(config)
user_repo = UserRepo.new(container)

john = user_repo.create(name: 'John', type: Type.new('User'))

puts john.inspect
# #<ROM::Struct[User] id=1 name="John" type="User">

I suspect this only fails when we use inference, as we have strict types by default. We can change them to non-strict, or coercible by default.

from rom-sql.

solnic avatar solnic commented on June 14, 2024

v0.9.0 was released and it should work there

from rom-sql.

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.