You have to do

db.define_table('poll',Field('author','integer',requires=IS_IN_DB(dbauth,'auth_user.id','%
(first_name)s %(last_name)s'))

Any implementation would do this under the hood so it is better to be
transparent and explicit. One database cannot enfore a reference to a
table in another database.

On Jul 24, 7:15 pm, "mr.freeze" <nat...@freezable.com> wrote:
> Negative ghostrider. You can't currently add a field that references a
> field in another database. It throws an error:
>
> db = DAL('...')
> authdb = DAL('...')
> auth = Auth(globals(), authdb)
> db.define_table('poll',Field('author',auth.settings.table_user))
>
> Traceback (most recent call last):
>   File "C:\Users\nathan_freeze\workspace\web2py\gluon\restricted.py",
> line 178, in restricted
>     exec ccode in environment
>   File "C:/Users/nathan_freeze/workspace/web2py/applications/test/
> models/db.py", line 63, in <module>
>     db.define_table('poll',Field('author',auth.settings.table_user))
>   File "C:\Users\nathan_freeze\workspace\web2py\gluon\sql.py", line
> 1304, in define_table
>     t._create_references()
>   File "C:\Users\nathan_freeze\workspace\web2py\gluon\sql.py", line
> 1576, in _create_references
>     raise SyntaxError, 'Table: table "%s" does not exist' % referenced
> SyntaxError: Table: table "auth_user" does not exist
>
> On Jul 24, 7:07 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > Not sure what you mean. This works already.
>
> > On Jul 24, 7:03 pm, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > How difficult would it be to patch the DAL to make this work?
>
> > > On Jul 24, 7:00 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > Caveat... if two apps point to the same db make sure only one of them
> > > > has migrate=True and all the others have migrate=False for all table
> > > > or things result in a mess.
>
> > > > On Jul 24, 6:59 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > > The DAL(...) function has a path attribute and you can make it point
> > > > > to the folder of another app.
>
> > > > > On Jul 24, 3:56 pm, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > > > > The main purpose is to easily allow many apps to share an 
> > > > > > established
> > > > > > auth db.  You wouldn't need to decorate controllers any differently
> > > > > > because the DAL instance is passed to the constructor of Auth, not 
> > > > > > to
> > > > > > the decorator. If anything, I would suspect a performance gain as 
> > > > > > you
> > > > > > would be splitting the load over multiple database servers.
>
> > > > > > On Jul 24, 3:44 pm, weheh <richard_gor...@verizon.net> wrote:
>
> > > > > > > I like the potential flexibility but am not sure what the purpose
> > > > > > > would be for having a separate auth db? What if you then had 
> > > > > > > multiple
> > > > > > > auth dbs? Wouldn't you need to decorate controllers with the name 
> > > > > > > of
> > > > > > > the auth db to search in? Wouldn't there be a performance penalty 
> > > > > > > for
> > > > > > > opening up links to multiple dbs?
>
> > > > > > > On Jul 24, 2:20 pm, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > > > > > > I was attempting to completely separate my auth db from my data 
> > > > > > > > db and
> > > > > > > > realized this isn't currently possible but potentially could be:
>
> > > > > > > > db = DAL('...')
> > > > > > > > authdb = DAL('...')
> > > > > > > > auth = Auth(globals(), authdb)
> > > > > > > > db.define_table('poll',Field('author',auth.settings.table_user))
>
> > > > > > > > Two questions:
> > > > > > > > Is this a crazy idea?
> > > > > > > > Could the DAL be modified to handle this?

Reply via email to